/*******************************************
  Jose Andres Lara Vecino

  Author       : $Author: cainlara@gmail.com $
  Last CheckIn : $Date: 2012-10-03 22:46:59 +0000 (Wed, 03 Oct 2012) $
  Revision     : $Revision: 105 $
*******************************************/

package api.impl;

import java.util.ArrayList;
import java.util.List;

import persistencia.TmProyecto;
import utilidad.UtilConversor;
import api.IProyectoAPI;
import core.TestManagerException;
import dao.ProyectoDao;
import frente.Proyecto;
import generico.GenericoAPI;

/**
 * Controlador de acciones para Proyectos.
 * <P>
 * Esta clase, administra la informacion 
 * persistente de los objetos tipo <code>Proyecto</code>.
 * 
 * @see ProyectoDao
 * @see TmProyecto
 * @see Proyecto
 * 
 * @author jose.lara 06.06.2012
 */
public class ProyectoAPI extends GenericoAPI implements IProyectoAPI {
    private static final long serialVersionUID = 7738068357909738056L;
    
    private ProyectoDao dao = null;
    
    public ProyectoAPI() {
    }
    
    private ProyectoDao getDao() {
        if(dao == null) {
            dao = new ProyectoDao();
        }
        
        return dao;
    }
    
    @Override
    public List<Proyecto> getTodosProyectos() throws TestManagerException {
        List<Proyecto> proyectos        = null;
        List<TmProyecto> persistentes   = null;
        Proyecto proyecto               = null;
        
        persistentes = getDao().getResultFindAll();
        
        if(persistentes != null) {
            proyectos = new ArrayList<Proyecto>();
            
            for(TmProyecto persistente : persistentes) {
                proyecto = UtilConversor.convertir2Proyecto(persistente);
                
                if(proyecto != null) {
                    proyectos.add(proyecto);
                }
            }
        }
        
        return proyectos;
    }
    
    @Override
    public void guardarProyecto(Proyecto proyecto) throws TestManagerException {
        TmProyecto persistente  = null;
        Long llave              = null;
        
        llave = proyecto.getId();
        
        if(llave == null) {
            persistente = new TmProyecto();
            persistente.setId(obtenerId("TmProyecto"));
        }
        else {
            persistente = getDao().getResultfindById(TmProyecto.class, llave);
        }
        
        persistente.setDescripcion(proyecto.getDescripcion());
        persistente.setNombre(proyecto.getNombre());
        persistente.setVersion(proyecto.getVersion());
        persistente.setColor(proyecto.getColor());
        
        getDao().save(persistente);
    }
    
    @Override
    public void eliminarProyecto(Proyecto proyecto) throws TestManagerException {
        TmProyecto persistente = null;
        persistente = getDao().getResultfindById(TmProyecto.class, proyecto.getId());
        getDao().delete(persistente);
    }
}
